]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
networkAgent: Handle empty vpn 'keyfiles'
authorAdel Gadllah <adel.gadllah@gmail.com>
Wed, 23 Apr 2014 06:52:37 +0000 (08:52 +0200)
committerAdel Gadllah <adel.gadllah@gmail.com>
Wed, 23 Apr 2014 11:09:34 +0000 (13:09 +0200)
Passing back no data is valid in case both secrets (group and user passwords)
are stored.

Just confirm the request in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=728681

js/ui/components/networkAgent.js

index 66c46281785c34ac3acb919f15dc2dd3e9d69ac7..181aa77c1cb98db9e1f61e3f0b9f1ec28fa0f889 100644 (file)
@@ -510,10 +510,12 @@ const VPNRequestHandler = new Lang.Class({
 
     _showNewStyleDialog: function() {
         let keyfile = new GLib.KeyFile();
+        let data;
         let contentOverride;
 
         try {
-            let data = this._dataStdout.peek_buffer();
+            data = this._dataStdout.peek_buffer();
+
             keyfile.load_from_data(data.toString(), data.length,
                                    GLib.KeyFileFlags.NONE);
 
@@ -546,13 +548,16 @@ const VPNRequestHandler = new Lang.Class({
                 }
             }
         } catch(e) {
-            logError(e, 'error while reading VPN plugin output keyfile');
+            // No output is a valid case it means "both secrets are stored"
+            if (data.length > 0) {
+                logError(e, 'error while reading VPN plugin output keyfile');
 
-            this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
-            return;
+                this._agent.respond(this._requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
+                return;
+            }
         }
 
-        if (contentOverride.secrets.length) {
+        if (contentOverride && contentOverride.secrets.length) {
             // Only show the dialog if we actually have something to ask
             this._shellDialog = new NetworkSecretDialog(this._agent, this._requestId, this._connection, 'vpn', [], contentOverride);
             this._shellDialog.open(global.get_current_time());